今天分享自己接觸 docker 以來,遇到頻率比較高的一些問題,希望對初學的人有一些幫助。
這個在一開始還蠻重要的,因為 docker 容器內的資料再重新啟動之後又會還原到一開始的狀態,中間產生的 /var/log, 資料通通都不見了。所以需要設定 volume,docker 就會將指定的檔案路徑映射到到容器中的路徑,這樣就算 docker 關閉容器後,也不會造成資料流失。
同理,資料庫的檔案也要記得設定 volume
這個幾乎是 docker 使用者必定會遇到的問題。常見的狀況是資料夾擁有者是 1000:1000 但 docker 內的服務往往是用其他身分 (www, www-data) 執行,然後檔案權限預設是 755,造成無法寫入檔案的情況。
解法是 chmod 777 -R <dir-name>; chown www-data:www-data -R <dir-name>
一開始的 docker 需要 root 身分才能執行,但隨之而來的是安全問題。所以有一些人建議用非 root 的身分執行 docker。注意:使用前須要確認 docker 的版本在 v20 以上。[^1] [^2]
docker start <container1> <container2> ...
啟動容器docker stop <container1> <container2> ...
關閉容器docker ps
列出運行中的容器docker exec -ti -w <work-dir-path> <container-name> bash
連進容器做事情docker exec <container-name> <cmd...>
不想進容器,只想執行一次指令就結束
看別人的推薦文章談到 Podman 有興趣可以了解一下 [^3]
[1]: Docker Tips: Running a Container With a Non Root User | by Luc Juggery | Better Programming
[2]: Run the Docker daemon as a non-root user (Rootless mode) | Docker Documentation
[3]: Podman 淺談 - 為何你應該選擇 Podman 而不是 Docker? - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天